// 订单地址提交测试脚本
const axios = require('axios');

// 配置基础URL
const BASE_URL = 'http://localhost:3000';



// 测试数据 - 使用用户提供的必要字段（注意：使用下划线命名法以匹配后端要求）
const testAddressData = {
  order_id: '56',
  consignee_name: '1111',
  phone_number: '11111',
  detail_address: '11111',
  delivery_time: '2025-09-16 13:00-17:00',
  remarks: '11111',
  // 非必要字段设置为空值
  province: '',
  city: '',
  district: ''
};

// 普通用户登录获取token（使用模拟数据）
async function login() {
  console.log('开始普通用户登录...');
  try {
    const response = await axios.post(`${BASE_URL}/api/user/login`, {
      code: 'test_code_for_login', // 测试用code，会触发系统的模拟数据模式
      userInfo: {
        nickName: '测试用户',
        avatarUrl: 'https://example.com/avatar.jpg',
        gender: 1,
        language: 'zh_CN',
        city: '北京',
        province: '北京',
        country: '中国'
      }
    }, {
      headers: {
        'Content-Type': 'application/json'
      }
    });
    
    if (response.data && response.data.token) {
      console.log('用户登录成功，获取到token');
      return response.data.token;
    } else {
      console.error('用户登录失败:', response.data?.message);
      return null;
    }
  } catch (error) {
    console.error('登录请求失败:', error.response?.data || error.message);
    return null;
  }
}

// 测试保存订单地址函数
async function testSaveOrderAddress(token) {
  console.log('开始测试保存订单地址...');
  console.log('测试数据:', testAddressData);

  try {
    const response = await axios.post(`${BASE_URL}/api/order-address/`, testAddressData, {
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Bearer ${token}`
      }
    });

    console.log('保存订单地址测试结果:', response.data);
    return {
      success: true,
      data: response.data
    };
  } catch (error) {
    console.error('保存订单地址测试失败:', error.response?.data || error.message);
    return {
      success: false,
      error: error.response?.data || error.message
    };
  }
}

// 主测试函数
async function runTests() {
  console.log('==================== 订单地址接口测试 ====================');
  
  // 先登录获取token
  const token = await login();
  
  if (!token) {
    console.error('无法获取登录token，测试终止');
    return;
  }
  
  // 执行保存地址测试
  const saveResult = await testSaveOrderAddress(token);
  
  console.log('\n==================== 测试总结 ====================');
  console.log('保存订单地址:', saveResult.success ? '成功' : '失败');
  if (!saveResult.success) {
    console.log('失败原因:', saveResult.error);
  }
  console.log('==================================================');
}

// 运行测试
runTests().catch(err => {
  console.error('测试过程中出现未捕获错误:', err);
});